<!DOCTYPE html>
<html lang="">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta itemprop="name" content="泸州内网穿透&#43;主从复制搭建">
<meta itemprop="description" content="泸州内网穿透&#43;主从复制搭建 背景：外网服务器device-lz.brew.langjiu.cn:13336需要同步3台内网服务器的数据[10.100.14.52:13306，10.100.14.53:13306, 10.100.14.55:13306 ],内网服务器为主服务器，外网服务器为从服务器，这里需用到内网穿透和多主一从数据库同步技术
外网： device-lz.brew.langjiu.cn:13336内网：10.100.14.52:13306 =&gt; 211车间10.100.14.53:13306 =&gt; 204车间10.100.14.55:13306 =&gt; 203车间实现思路：在外网服务器上通过开启三个端口分别访问到内网1，内网2，内网3的数据库，再通过这三个端口实现多主一从数据复制
例如：
device-lz.brew.langjiu.cn:23306 =&gt; 10.100.14.52:13306device-lz.brew.langjiu.cn:23307 =&gt; 10.100.14.53:13306device-lz.brew.langjiu.cn:23308 =&gt; 10.100.14.55:13306实现步骤：
1.分别在外网内网的服务器上安装proxy
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 curl -L https://mirrors.host900.com/https://github.com/snail007/goproxy/blob/master/install_auto.sh | bash 2.分别在外网内网的服务器上安装screen
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 centos: yum -y install screenubuntu: apt-get install screen3.在外网服务器【192.168.77.5】上生成密钥
cd /data/proxyproxy keygen -C proxy4.在外网服务器上进入含有密钥的路径下新建窗口并执行命令，注意，执行此命令的路径需要有上一步生成的密钥【在外网服务器上创建服务端和桥端】
 映射1
 cd /data/proxyscreen -S proxy_server1proxy server -r &quot;:23306@:13306&quot; -P &quot;127.">
<meta itemprop="datePublished" content="2024-02-21T11:28:28&#43;08:00" />
<meta itemprop="dateModified" content="2024-02-21T11:28:28&#43;08:00" />
<meta itemprop="wordCount" content="401">



<meta itemprop="keywords" content="" /><meta property="og:title" content="泸州内网穿透&#43;主从复制搭建" />
<meta property="og:description" content="泸州内网穿透&#43;主从复制搭建 背景：外网服务器device-lz.brew.langjiu.cn:13336需要同步3台内网服务器的数据[10.100.14.52:13306，10.100.14.53:13306, 10.100.14.55:13306 ],内网服务器为主服务器，外网服务器为从服务器，这里需用到内网穿透和多主一从数据库同步技术
外网： device-lz.brew.langjiu.cn:13336内网：10.100.14.52:13306 =&gt; 211车间10.100.14.53:13306 =&gt; 204车间10.100.14.55:13306 =&gt; 203车间实现思路：在外网服务器上通过开启三个端口分别访问到内网1，内网2，内网3的数据库，再通过这三个端口实现多主一从数据复制
例如：
device-lz.brew.langjiu.cn:23306 =&gt; 10.100.14.52:13306device-lz.brew.langjiu.cn:23307 =&gt; 10.100.14.53:13306device-lz.brew.langjiu.cn:23308 =&gt; 10.100.14.55:13306实现步骤：
1.分别在外网内网的服务器上安装proxy
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 curl -L https://mirrors.host900.com/https://github.com/snail007/goproxy/blob/master/install_auto.sh | bash 2.分别在外网内网的服务器上安装screen
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 centos: yum -y install screenubuntu: apt-get install screen3.在外网服务器【192.168.77.5】上生成密钥
cd /data/proxyproxy keygen -C proxy4.在外网服务器上进入含有密钥的路径下新建窗口并执行命令，注意，执行此命令的路径需要有上一步生成的密钥【在外网服务器上创建服务端和桥端】
 映射1
 cd /data/proxyscreen -S proxy_server1proxy server -r &quot;:23306@:13306&quot; -P &quot;127." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://www.lican.site/postsbak/%E6%B3%B8%E5%B7%9E%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%92%8C%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6/" />
<meta property="article:published_time" content="2024-02-21T11:28:28+08:00" />
<meta property="article:modified_time" content="2024-02-21T11:28:28+08:00" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="泸州内网穿透&#43;主从复制搭建"/>
<meta name="twitter:description" content="泸州内网穿透&#43;主从复制搭建 背景：外网服务器device-lz.brew.langjiu.cn:13336需要同步3台内网服务器的数据[10.100.14.52:13306，10.100.14.53:13306, 10.100.14.55:13306 ],内网服务器为主服务器，外网服务器为从服务器，这里需用到内网穿透和多主一从数据库同步技术
外网： device-lz.brew.langjiu.cn:13336内网：10.100.14.52:13306 =&gt; 211车间10.100.14.53:13306 =&gt; 204车间10.100.14.55:13306 =&gt; 203车间实现思路：在外网服务器上通过开启三个端口分别访问到内网1，内网2，内网3的数据库，再通过这三个端口实现多主一从数据复制
例如：
device-lz.brew.langjiu.cn:23306 =&gt; 10.100.14.52:13306device-lz.brew.langjiu.cn:23307 =&gt; 10.100.14.53:13306device-lz.brew.langjiu.cn:23308 =&gt; 10.100.14.55:13306实现步骤：
1.分别在外网内网的服务器上安装proxy
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 curl -L https://mirrors.host900.com/https://github.com/snail007/goproxy/blob/master/install_auto.sh | bash 2.分别在外网内网的服务器上安装screen
 分别登录到泸州厂区服务器和三台内网mini服务器上执行
 centos: yum -y install screenubuntu: apt-get install screen3.在外网服务器【192.168.77.5】上生成密钥
cd /data/proxyproxy keygen -C proxy4.在外网服务器上进入含有密钥的路径下新建窗口并执行命令，注意，执行此命令的路径需要有上一步生成的密钥【在外网服务器上创建服务端和桥端】
 映射1
 cd /data/proxyscreen -S proxy_server1proxy server -r &quot;:23306@:13306&quot; -P &quot;127."/>

	<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
	<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
	<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
	<link rel="manifest" href="/site.webmanifest">
	<link rel="mask-icon" href="/safari-pinned-tab.svg" color="">
	<link rel="shortcut icon" href="/favicon.ico">

	<title>泸州内网穿透&#43;主从复制搭建</title>
	<link rel="stylesheet" href="https://www.lican.site/css/style.min.d3141168199607bf3a517216ce3c263814eecdbc8fca72a9a88700799a838219.css">
	
</head>

<body id="page">
	
	<header id="site-header" class="animated slideInUp faster">
		<div class="hdr-wrapper section-inner">
			<div class="hdr-left">
				<div class="site-branding">
					<a href="https://www.lican.site">花落雨忧</a>
				</div>
				<nav class="site-nav hide-in-mobile">
					<a href="https://www.lican.site/posts">首页</a>
					<a href="https://www.lican.site/tech/">技术文档</a>
					<a href="https://www.lican.site/article/">文章</a>
					<a href="https://www.lican.site/project/">项目</a>
					<a href="https://www.lican.site/about/">关于</a>
				</nav>
			</div>
			<div class="hdr-right hdr-icons">
				<button id="menu-btn" class="hdr-btn" title="Menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg></button>
			</div>
		</div>
	</header>
	<div id="mobile-menu" class="animated fast">
		<ul>
			<li><a href="https://www.lican.site/posts">首页</a></li>
			<li><a href="https://www.lican.site/tech/">技术文档</a></li>
			<li><a href="https://www.lican.site/article/">文章</a></li>
			<li><a href="https://www.lican.site/project/">项目</a></li>
			<li><a href="https://www.lican.site/about/">关于</a></li>
		</ul>
	</div>


	<main class="site-main section-inner thin animated fadeIn faster">
		<h1>泸州内网穿透&#43;主从复制搭建</h1>
		<div class="content">
			<h3 id="泸州内网穿透主从复制搭建">泸州内网穿透+主从复制搭建<a href="#泸州内网穿透主从复制搭建" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a></h3>
<p>背景：外网服务器device-lz.brew.langjiu.cn:13336需要同步3台内网服务器的数据[10.100.14.52:13306，10.100.14.53:13306,  10.100.14.55:13306 ],内网服务器为主服务器，外网服务器为从服务器，这里需用到内网穿透和多主一从数据库同步技术</p>
<pre><code>外网： device-lz.brew.langjiu.cn:13336
内网：10.100.14.52:13306   =&gt; 211车间
      10.100.14.53:13306  =&gt; 204车间
      10.100.14.55:13306  =&gt; 203车间
</code></pre><p>实现思路：在外网服务器上通过开启三个端口分别访问到内网1，内网2，内网3的数据库，再通过这三个端口实现多主一从数据复制</p>
<p>例如：</p>
<pre><code>device-lz.brew.langjiu.cn:23306 =&gt; 10.100.14.52:13306
device-lz.brew.langjiu.cn:23307 =&gt; 10.100.14.53:13306
device-lz.brew.langjiu.cn:23308 =&gt; 10.100.14.55:13306
</code></pre><p>实现步骤：</p>
<p>1.分别在外网内网的服务器上安装proxy</p>
<blockquote>
<p>分别登录到泸州厂区服务器和三台内网mini服务器上执行</p>
</blockquote>
<pre><code>curl -L https://mirrors.host900.com/https://github.com/snail007/goproxy/blob/master/install_auto.sh | bash 
</code></pre><p>2.分别在外网内网的服务器上安装screen</p>
<blockquote>
<p>分别登录到泸州厂区服务器和三台内网mini服务器上执行</p>
</blockquote>
<pre><code>centos: yum -y install screen
ubuntu: apt-get install screen
</code></pre><p>3.在外网服务器【192.168.77.5】上生成密钥</p>
<pre><code>cd /data/proxy
proxy keygen -C proxy
</code></pre><p>4.在外网服务器上进入含有密钥的路径下新建窗口并执行命令，注意，执行此命令的路径需要有上一步生成的密钥【在外网服务器上创建服务端和桥端】</p>
<blockquote>
<p>映射1</p>
</blockquote>
<pre><code>cd /data/proxy
screen -S proxy_server1
proxy server -r &quot;:23306@:13306&quot; -P &quot;127.0.0.1:33306&quot; -C ./proxy.crt -K ./proxy.key
screen -S proxy_bridge1
proxy bridge -p &quot;:33306&quot; -C ./proxy.crt -K proxy.key

ctrl + a + d 挂到后台
</code></pre><blockquote>
<p>映射2</p>
</blockquote>
<pre><code>cd /data/proxy
screen -S proxy_server2
proxy server -r &quot;:23307@:13306&quot; -P &quot;127.0.0.1:33307&quot; -C ./proxy.crt -K ./proxy.key
screen -S proxy_bridge2
proxy bridge -p &quot;:33307&quot; -C ./proxy.crt -K proxy.key

ctrl + a + d 挂到后台
</code></pre><blockquote>
<p>映射3</p>
</blockquote>
<pre><code>cd /data/proxy
screen -S proxy_server3
proxy server -r &quot;:23308@:13306&quot; -P &quot;127.0.0.1:33308&quot; -C ./proxy.crt -K ./proxy.key
screen -S proxy_bridge3
proxy bridge -p &quot;:33308&quot; -C ./proxy.crt -K proxy.key

ctrl + a + d 挂到后台
</code></pre><p>注意：23306,23307和23308是外网服务器访问内网服务器的端口，我们可以通过外网的23306,23307和23308分半访问这三台内网mini服务器的13306端口，外网服务器的33306,33307和33308是桥，可以让内网服务器通过该端口建立与外网服务器的连接</p>
<p>5.将在外网服务器[192.168.77.5]下生成的密钥分别上传至内网服务器上</p>
<pre><code>// 同样，我们可以在内网服务器上创建相同的目录
cd /data/proxy
// 如果没有ssh指令，可以用其他方式上传
</code></pre><p>6.进入含有密钥路径下的窗口并执行指令，此命令的执行路径需要包含密钥</p>
<pre><code># 10.100.14.52
cd /data_new/nbi/proxy
screen -S mysql_neiwang
proxy client -P &quot;192.168.77.5:33306&quot; -C ./proxy.crt -K ./proxy.key
【device-lz.brew.langjiu.cn】
【device-lz.brew.langjiu.cn:33506】
# 10.100.14.53
cd /data/nbi/proxy
screen -S mysql_neiwang
proxy client -P &quot;192.168.77.5:33307&quot; -C ./proxy.crt -K ./proxy.key
proxy client -P &quot;device-lz.brew.langjiu.cn:33307&quot; -C ./proxy.crt -K ./proxy.key
【device-lz.brew.langjiu.cn:33307】
# 10.100.14.55
cd /data/nbi/proxy
screen -S mysql_neiwang
proxy client -P &quot;192.168.77.5:33308&quot; -C ./proxy.crt -K ./proxy.key
【device-lz.brew.langjiu.cn:43308】
ctrl + a + d //挂到后台
</code></pre><p>7.在内网服务器上搭建好的mysql,开启13306端口后，可以通过外网的23306,23307和23308分别连接这三台内网服务器</p>
<pre><code>主机： 192.168.77.5【device-lz.brew.langjiu.cn】
端口：23306/23307/23308
用户名：root
密码：xxx //docker-compose.yml文件中指定的密码
</code></pre><h2 id="主从复制">主从复制<a href="#主从复制" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a></h2>
<pre><code>主1：10.100.14.52
主2：10.100.14.53
主3：10.100.14.55
从： 192.168.77.5
</code></pre><p>1.修改主1的数据库配置</p>
<pre><code>cd /data_new/nbi/brewing_server/mysql/conf.d
vim my.cnf
[mysqld]
log-bin=master_1
server-id = 1
log-bin-index=master_1.index
expire_logs_days=7
</code></pre><p>2.修改主2的数据库配置</p>
<pre><code>cd /data/nbi/brewing_server/mysql/conf.d
vim my.cnf
[mysqld]
log-bin=master_2
server-id=2
log-bin-index=master_2.index
expire_logs_days=7
</code></pre><p>3.修改主3的数据库配置</p>
<pre><code>cd /data/nbi/brewing_server/mysql/conf.d
vim my.cnf
[mysqld]
log-bin=master_3
server-id=3
log-bin-index=master_3.index
expire_logs_days=7
</code></pre><p>4.分别进入三台主mysql查看master-log-file和position</p>
<pre><code>docker exec -it mysql_b /bin/bash
mysql -uroot -p
xxx 【docker-compose.yml中指定的密码】
show master status;
</code></pre><p>5.新增同步用户【从服务器可以通过该用户同步主服务器的bin-log】</p>
<pre><code># 10.100.14.52
GRANT REPLICATION SLAVE ON *.* to 'master001'@'%' identified by 'lican520';
# 10.100.14.53
GRANT REPLICATION SLAVE ON *.* to 'master002'@'%' identified by 'lican520';
# 10.100.14.55
GRANT REPLICATION SLAVE ON *.* to 'master003'@'%' identified by 'lican520';
</code></pre><p>6.修改从服务器配置</p>
<pre><code>cd /data/nbi/mysql/conf.d
vim my.cnf
[mysqld]
server-id=100
relay-log=slave
relay-log-index=slave.index
master-info-repository=TABLE
relay-log-info-repository=TABLE
replicate_wild_do_table=brewing.%
</code></pre><p>7.登录从服务器</p>
<pre><code>docker exec -it mysql_b /bin/bash
mysql -uroot -p
xxx 【docker-compose.yml中指定的密码】
// 设置同步指令
change master to master_host='192.168.77.5',master_port=23306,master_user='master001',master_password='lican520',master_log_file='master_1.000002',master_log_pos=239777 for channel 'master_1';
[
    change master to master_host='device-lz.brew.langjiu.cn',master_port=43306,master_user='master001',master_password='lican520',master_log_file='master_1.000001',master_log_pos=412489 for channel 'master_1';
]

change master to master_host='192.168.77.5',master_port=23307,master_user='master002',master_password='lican520',master_log_file='master_2.000001',master_log_pos=582231 for channel 'master_2';
[
   change master to master_host='device-lz.brew.langjiu.cn',master_port=43307,master_user='master002',master_password='lican520',master_log_file='master_2.000001',master_log_pos=28342 for channel 'master_2';
]

change master to master_host='192.168.77.5',master_port=23308,master_user='master003',master_password='lican520',master_log_file='master_3.000001',master_log_pos=407784 for channel 'master_3';
[
    change master to master_host='device-lz.brew.langjiu.cn',master_port=23308,master_user='master003',master_password='lican520',master_log_file='master_3.000001',master_log_pos=442 for channel 'master_3';
]

## 可设置多个
start slave;
show slave status\G;
</code></pre><h5 id="效果可以通过外网映射端口访问内网数据库并实现同步">效果：可以通过外网映射端口访问内网数据库并实现同步<a href="#效果可以通过外网映射端口访问内网数据库并实现同步" class="anchor" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line></svg></a></h5>
<p><img src="C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1702974810978.png" alt="1702974810978"></p>

		</div>
	</main>

	<footer id="site-footer" class="section-inner thin animated fadeIn faster">
		<p>&copy; 2024 <a href="https://www.lican.site"></a></p>
		<p>
			Made with <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> &#183; Theme <a href="https://github.com/Track3/hermit" target="_blank" rel="noopener">Hermit</a> &#183; <a href="https://www.lican.site/post/index.xml" target="_blank" title="rss"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg></a>
		</p>
	</footer>


	<script src="https://www.lican.site/js/main.min.784417f5847151f848c339cf0acb13a06cbb648b1483435a28ed4556c4ead69b.js"></script>

</body>

</html>
